检测网线插入的sample code

int detect_ethtool(char *ifname)
{
    int skfd;
    if (( skfd = socket( AF_INET, SOCK_DGRAM, 0 ) ) < 0 )
    {
        printf("[ETHTOOL]:socket error\n");
        return 2;
    }
    struct ifreq ifr;
    struct ethtool_value edata;
    memset(&ifr, 0, sizeof(ifr));
    edata.cmd = ETHTOOL_GLINK;
    strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)-1);
    ifr.ifr_data = (char *) &edata;
    if (ioctl(skfd, SIOCETHTOOL, &ifr) == -1)
    {
        printf("[ETHTOOL]ETHTOOL_GLINK failed: %s\n", strerror(errno));
        close(skfd);
        return 2;
    }
    close(skfd);
    return (edata.data ? 0 : 1);
}